| 2 APPLICATION SCENARIOS | ======================= | | | 2.1 Linear, Time-invariant Equalization Model | ============================================= | | 1. From the system netlist, the EDA platform determines that a given | [Model] is described by an IBIS file. | | 2. From the IBIS file, the EDA platform determines that the [Model] is | described at least in part by an algorithmic model. | | 3. The EDA platform loads the shared library or shared object file | containing the algorithmic model, and obtains the addresses of the | AMI_Init, AMI_GetWave, and AMI_Close functions. | | 4. The EDA platform assembles the arguments for AMI_Init. These | arguments include the impulse response of the channel driving the | block, a handle for the dynamic memory used by the block, the | parameters for configuring the block, and optionally the impulse | responses of any crosstalk interferers. | | 5. The EDA platform calls AMI_Init with the arguments previously | prepared. | | 6. AMI_Init parses the configuration parameters, allocates dynamic | memory, places the address of the start of the dynamic memory in the | memory handle. Depending on the value of Init_Returns_Filter, it | either computes and returns the filter response of the block, or | computes the impulse response of the channel modified by the filter | response of the block. | | 7. The EDA platform completes the rest of the simulation/analysis using | the impulse response from AMI_Init as a complete representation of | the behavior of the given block combined with the channel, or makes | use of the filter response returned by AMI_Init to compute the | behavior of the given block combined with the channel. | | 8. Before exiting, the EDA platform calls AMI_Close, giving it the | address in the memory handle for the block. | | 9. AMI_Close de-allocates the dynamic memory for the block and performs | whatever other clean-up actions are required. | | 10. The EDA platform terminates execution. | | | 2.2 Nonlinear, and / or Time-variant Equalization Model | ======================================================= | | 1. From the system netlist, the EDA platform determines that a given | block is described by an IBIS file. | | 2. From the IBIS file, the EDA platform determines that the block is | described at least in part by an algorithmic model. | | 3. The EDA platform loads the shared library or shared object file | containing the algorithmic model, and obtains the addresses of the | AMI_Init, AMI_GetWave, and AMI_Close functions. | | 4. The EDA platform assembles the arguments for AMI_Init. These | arguments include the impulse response of the channel driving the | block, a handle for the dynamic memory used by the block, the | parameters for configuring the block, and optionally the impulse | responses of any crosstalk interferers. | | 5. The EDA platform calls AMI_Init with the arguments previously | prepared. | | 6. AMI_Init parses the configuration parameters, allocates dynamic | memory and places the address of the start of the dynamic memory in | the memory handle. Depending on the value of Init_Returns_Filter, | it either computes and returns the filter response of the block, or | computes the impulse response of the channel modified by the filter | response of the block. The EDA platform may make use of the | impulse response or the filter response returned by AMI_Init in its | further analysis if needed. | | 7. The EDA platform generates a time domain input waveform (stimulus) | bit pattern. A long simulation may be broken up into multiple time | segments by the EDA platform. For example, if a million bits are | to be simulated, there can be 1000 segments of 1000 bits each, i.e. | one time segment comprises 1000 bits. | | 8. For each time segment, the EDA platform calls the transmitter | AMI_GetWave function, giving it the input waveform and the address | in the dynamic memory handle for the block. | | 9. Depending on the value stored in the Use_Init_Output parameters, | the EDA platform combines the output of the transmitter AMI_GetWave | function with the output(s) of the AMI_Init function(s) with the | impulse response of the channel and passes this result to the | receiver AMI_GetWave function for each time segment of the | simulation. | | 10. The output waveform of the receiver GetWave function represents the | voltage waveform at the decision point of the receiver. The EDA | platform uses this waveform to complete the simulation/analysis. | | 11. Before exiting, the EDA platform calls AMI_Close, giving it the | address in the memory handle for the block. | | 12. AMI_Close de-allocates the dynamic memory for the block and performs | whatever other clean-up actions are required. | | 13. The EDA platform terminates execution. | | | 2.3 Reference system analysis flow | ================================== | | System simulations will commonly involve both TX and RX algorithmic | models, each of which may perform filtering in the AMI_Init call, the | AMI_Getwave call, or both. Since both LTI and non-LTI behavior can be | modeled with algorithmic models, the manner in which models are evaluated | can affect simulation results. The following steps are defined as the | reference simulation flow. Other methods of calling models and | processing results may be employed, but the final simulation waveforms | are expected to match the waveforms produced by the reference simulation | flow. | | | Step 1. The simulation platform obtains the impulse response for the | analog channel. This represents the combined impulse response | of the transmitter's analog output, the channel and the | receiver's analog front end. This impulse response represents | the transmitter's output characteristics without filtering, for | example, equalization. | | Step 2. The output of Step 1 is presented to the TX model's AMI_Init | call. If Init_Returns_Filter for the TX model is set to True, | the model returns the impulse response of the TX filter. If it | is set to False, the TX AMI_Init call returns the modified | impulse response of the channel. The output of TX AMI_Init is | returned to the EDA tool which decides how to make use of it | depending on the transmitter’s Init_Returns_Filter and | Use_Init_Output parameters. | | Step 3. If the transmitter’s Init_Returns_Filter parameter is set to | False, the output of Step 2 is presented to the RX model's | AMI_Init call. If the Init_Returns_Filter is set to True, the | EDA tool will combine the output of Step 2 with the output of | Step 1 (for example by convolution) before presenting it to the | RX model’s AMI_Init call. | | Step 4. The output of Step 3 is presented to the RX model's AMI_Init | call. If Init_Returns_Filter for the RX model is set to True, | the model returns the impulse response of the RX filter. If it | is set to False, the RX AMI_Init call returns the filtered | response of the channel. The output of RX AMI_Init is returned | to the EDA tool which decides how to make use of it depending | on the receiver’s Init_Returns_Filter and Use_Init_Output | parameters. | | Step 5. If the receiver’s Init_Returns_Filter parameter is set to | False, the output of Step 4 may be presented to the user of the | EDA tool, or the EDA tool can further process the results using | statistical algorithms. If the Init_Returns_Filter is set to | True, the EDA tool will combine the output of Step 4 with the | output of Step 3 (for example by convolution) before presenting | it to the user of the EDA tool, or before continuing with the | statistical processing of these results. | | Step 6. The simulation platform produces a digital stimulus waveform. A | digital stimulus waveform is 0.5 when the stimulus is “high”, | -0.5 when the stimulus is “low”, and may have a value between | -0.5 and 0.5 such that transitions occur when the stimulus | crosses 0. | | Step 7. The output of step 6 is presented to the TX model's AMI_Getwave | call. If the TX model does not include an AMI_Getwave call, | this step is a pass-through step, and the input to step 7 is | passed directly to step 8. | | Step 8. The EDA simulation platform combines (for example by | convolution) the output of step 7 with the output of several | different previous steps depending on the value of the | transmitter’s and receiver’s Init_Returns_Filter and | Use_Init_Output settings as follows: | | If TX Use_Init_Output = False, combine the outputs of Step 7 | and Step 1. | | If TX Use_Init_Output = True and TX Retuns_Filter = False, | combine the outputs of Step 7 and Step 2. | | If TX Use_Init_Output = True and TX Retuns_Filter = True, | combine the outputs of Step 7, Step 1 and Step 2. | | In addition, the EDA simulation platform will also combine the | output of Step 4 with the above if RX Use_Init_Output = True. | When RX Init_Returns_Filter = True, this is a relatively straight | forward operation, but when RX Init_Returns_Filter = False, the | EDA simulation platform will have to take additional steps to | prevent the duplication of the content that is present in the | output of Steps 2 and/or 3 (for example by deconvolution). This | is why RX Init_Returns_Filter = True is preferred when RX | Use_Init_Output = True. | | Step 9. The output of step 8 is presented to the RX model's AMI_Getwave | call. If the RX model does not include an AMI_Getwave call, | this step is a pass-through step, and the input to step 9 is | passed directly to step 10. | | Step 10. The output of step 9 becomes the simulation waveform output at | the RX decision point, which may be post-processed by the | simulation tool or presented to the user as is. | | Steps 6 though 9 can be called once or can be called multiple times to | process the full analog waveform. Splitting up the full analog waveform | into multiple calls reduces the memory requirements when doing long | simulations, and allows AMI_Getwave to return model status every so many | bits. Once all blocks of the input waveform have been processed, TX | AMI_Close and RX AMI_close are called to perform any final processing and | release allocated memory.